﻿Imports System.Threading

Public Class frmZlecenia
    'po otwarciu danego formularza wczytywane są niezbedne dane np.wszytskie gatunki materiału
    'formularz jest wywoływany z dwoma parametrami IdZlecenia oraz WyznKopiowania:
    ' IdZlecenia = 0 - oznacza, że formularz ma być czysty w celu wprowadzenia nowego zlecenia
    ' IdZlecenia <> 0 - formularz jest uzupelniony danymi danego zlecenia
    ' WyznKopiowania = 1 - oznacza, że zlecenie ma zostać skopiowane, czyli formularz ma być uzupełniony danymi danego zlecenia, ale ma być traktowane jak nowe zlecenie
    ' czyli nie ma numeru zlecenia, a wszsytkie statusu są ustawione na 'nowe'

    ' następnie w zależności od statusu zlecenia formularz jest odpowiednio przygotowany
    ' do edycji jeśli status zlecenia na to pozwala lub tylko do odczytu

    Private mvarChanged As Boolean
    Private mvarChangedInfZlecenia As Boolean
    Private mvarCancel As Boolean = False
    Private mvarDbHolder As clsDataBase
    Private mvarI As Integer
    Private mvarPozycjeId As Integer
    Private mvarWyznEdycji As Boolean = False
    Private mvarWyznKopiowania As Integer
    Private mvarWyznTylkoDoOdczytu As Boolean = False
    Private mvarWyznNoweZlecenie As Boolean
    Private mvarId As New DataTable
    Private mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej As Boolean
    Private mvarBlokowanie As clsRecordLock
    Private mvarZlecenie As clsInhZlecenie

    Private mvarTrZlecenie As clsInhTrZlecenie

    Private mvarUzytkownik As clsUzytkownik
    Private mvarFrmSzukaniaKlienta As frmKlientSzukanie
    Private mvarFrmOferta As frmOferty
    Private mvarWaitThread As Thread

    Private mvarZmianyPozycjiZlecenia As clsInhPozycjaZlecenia
    Private mvarOferta As clsInhOferta
    Private mvarIDOferty As Integer



    Public Sub New()

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        mvarChanged = False
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = CType(clsUzytkownik.Instance(), clsUzytkownik)

        PobierzKlientow()
        PobierzSposobZamowienia()
        PobierzWszystkieGatunkiMaterialu()
        PobierzWszystkieJednostki()
        PobierzStatusZlecenia()
        PobierzWszystkiePakowania()
        PobierzWszystkieWaluty()
        PobierzWszystkieMagazyny()

        mvarZlecenie = New clsInhZlecenie
        WyczyscInformacjePodstawowe()
        WyczyscPozycje()
        mvarChanged = False
        mvarChangedInfZlecenia = False
        mvarWyznNoweZlecenie = True

    End Sub




    Public Sub New(ByVal IdZlecenia As Integer, ByVal WyznKopiowania As Integer)

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        mvarChanged = False
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = CType(clsUzytkownik.Instance(), clsUzytkownik)
        mvarWyznKopiowania = WyznKopiowania

        PobierzKlientow()
        PobierzSposobZamowienia()
        PobierzWszystkieGatunkiMaterialu()
        PobierzWszystkieJednostki()
        PobierzStatusZlecenia()
        PobierzWszystkiePakowania()
        PobierzWszystkieWaluty()
        PobierzWszystkieMagazyny()

        If WyznKopiowania = 3 Then
            mvarOferta = New clsInhOferta(IdZlecenia, mvarDbHolder)
            mvarIDOferty = IdZlecenia
            mvarWyznNoweZlecenie = True
            mvarChanged = True
            UzupelnienieDanychZOferty(WyznKopiowania)
            mvarZlecenie = New clsInhZlecenie
        Else
            If IdZlecenia = 0 Then
                mvarZlecenie = New clsInhZlecenie
                WyczyscInformacjePodstawowe()
                WyczyscPozycje()
                mvarChanged = False
                mvarChangedInfZlecenia = False
                mvarWyznNoweZlecenie = True
            Else
                mvarZlecenie = New clsInhZlecenie(IdZlecenia, mvarDbHolder)
                If mvarZlecenie.OfertaId > 0 Then
                    mvarOferta = New clsInhOferta(mvarZlecenie.OfertaId, mvarDbHolder)
                End If
                If mvarZlecenie.Tracking = 1 And WyznKopiowania = 0 Then
                    grbTracing.Visible = True
                    cmdTracing.Enabled = False
                    grbStatus.Visible = True
                    mvarTrZlecenie = New clsInhTrZlecenie(clsInhTrZlecenie.PobierzIdZleceniaTr(mvarDbHolder, IdZlecenia), mvarDbHolder, True)
                End If
                If mvarZlecenie.StatusZlecenia.Nazwa = "wysłane" Then
                    ZlecenieZakonczone(IdZlecenia, CType(WyznKopiowania, Boolean))
                Else
                    ZlecenieReazlizowane(IdZlecenia, CType(WyznKopiowania, Boolean))
                End If
                mvarChangedInfZlecenia = False
            End If
        End If

    End Sub

#Region "Pobierz"

    Private Sub PobierzKlientow()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsKlient.PobierzWszystkichKlientow(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbKlient.Items.Add(New clsKlient(CInt(lvarRow("id")), CStr(IIf(IsDBNull(lvarRow("nazwa_pelna")), "", lvarRow("nazwa_pelna"))), CStr(IIf(IsDBNull(lvarRow("nazwa_skrocona")), "", lvarRow("nazwa_skrocona"))), CStr(IIf(IsDBNull(lvarRow("ulica")), "", lvarRow("ulica"))), CStr(IIf(IsDBNull(lvarRow("numer")), "", lvarRow("numer"))), CStr(IIf(IsDBNull(lvarRow("kod_pocztowy")), "", lvarRow("kod_pocztowy"))), CStr(IIf(IsDBNull(lvarRow("miejscowosc")), "", lvarRow("miejscowosc"))), CStr(IIf(IsDBNull(lvarRow("kraj")), "", lvarRow("kraj"))), CStr(IIf(IsDBNull(lvarRow("telefon")), "", lvarRow("telefon"))), CStr(IIf(IsDBNull(lvarRow("e_mail")), "", lvarRow("e_mail"))), CStr(IIf(IsDBNull(lvarRow("nip")), "", lvarRow("nip"))), CStr(IIf(IsDBNull(lvarRow("etykieta")), "", lvarRow("etykieta"))), CStr(IIf(IsDBNull(lvarRow("wysylka")), "", lvarRow("wysylka"))), CStr(IIf(IsDBNull(lvarRow("termin_platnosci")), "", lvarRow("termin_platnosci"))), CStr(IIf(IsDBNull(lvarRow("uwagi")), "", lvarRow("uwagi")))))
            Next
        End If

    End Sub

    Private Sub PobierzSposobZamowienia()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsSposobZamowienia.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbSposobZmowienia.Items.Add(New clsSposobZamowienia(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
            Next
        End If

    End Sub

    Private Sub PobierzStatusZlecenia()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsStatus.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                Select Case CInt(lvarRow("id"))
                    Case 1 To 3
                        cmbStatusZlecenia.Items.Add(New clsStatus(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
                    Case 7
                        cmbStatusZlecenia.Items.Add(New clsStatus(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
                End Select
                'cmbStatusZlecenia.Items.Add(New clsStatus(lvarRow("id"), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
                'If lvarRow("id") = 3 Then
                '    Exit For
                'End If
            Next
        End If

    End Sub

    Private Sub PobierzWszystkieGatunkiMaterialu()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsGatunek.PobierzWszystkieGatunki(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbMaterial.Items.Add(New clsGatunek(CInt(lvarRow("id")), CStr(IIf(IsDBNull(lvarRow("nazwa_ang")), "", lvarRow("nazwa_ang"))), CStr(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa"))), CStr(IIf(IsDBNull(lvarRow("nazwa_niem")), "", lvarRow("nazwa_niem"))), CStr(IIf(IsDBNull(lvarRow("norma_wykonania")), "", lvarRow("norma_wykonania"))), CStr(IIf(IsDBNull(lvarRow("stop_id")), -1, lvarRow("stop_id")))))
            Next
        End If

    End Sub

    Private Sub PobierzWszystkieJednostki()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsJednostkaMiary.PobierzWszystkieJednostki(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbJednostka.Items.Add(New clsJednostkaMiary(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("jednostka")), "", lvarRow("jednostka")), String)))
            Next
        End If

    End Sub

    Private Sub PobierzWszystkiePakowania()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsPakowanie.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbPakowanie.Items.Add(New clsPakowanie(CStr(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), String.Empty, lvarRow("nazwa")), String), CType(IIf(IsDBNull(lvarRow("cena")), 0, lvarRow("cena")), Double), CType(IIf(IsDBNull(lvarRow("waga")), 0, lvarRow("waga")), Double)))
            Next
        End If

    End Sub

    Private Sub PobierzWszystkieWaluty()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsWaluta.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbWaluta.Items.Add(New clsWaluta(CStr(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
            Next
        End If

    End Sub

    Private Sub PobierzAdresyWysylki(ByVal KlientId As Integer)

        Dim lvarDataTable As New DataTable
        mvarI = 0
        lvarDataTable = clsAdresWysylki.PobierzWszystkieAdresyWysylki(mvarDbHolder, KlientId, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                mvarI = mvarI + 1
                cmbAdresWysylki.Items.Add(New clsAdresWysylki(CInt(lvarRow("id")), CStr(IIf(IsDBNull(lvarRow("nazwa_skrocona")), "", lvarRow("nazwa_skrocona"))), CInt(IIf(IsDBNull(lvarRow("klient_id")), "", lvarRow("klient_id"))), CStr(IIf(IsDBNull(lvarRow("ulica")), "", lvarRow("ulica"))), CStr(IIf(IsDBNull(lvarRow("numer")), "", lvarRow("numer"))), CStr(IIf(IsDBNull(lvarRow("kod_pocztowy")), "", lvarRow("kod_pocztowy"))), CStr(IIf(IsDBNull(lvarRow("miejscowosc")), "", lvarRow("miejscowosc"))), CStr(IIf(IsDBNull(lvarRow("kraj")), "", lvarRow("kraj"))), CStr(IIf(IsDBNull(lvarRow("telefon")), "", lvarRow("telefon"))), CStr(IIf(IsDBNull(lvarRow("e_mail")), "", lvarRow("e_mail")))))
            Next
        End If

    End Sub

    Private Sub PobierzWszystkieMagazyny()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsMagazyn.PobierzWszystkieOpcje(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbMagazyn.Items.Add(New clsMagazyn(CInt(lvarRow("id")), CType(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")), String)))
            Next
        End If

    End Sub

#End Region

    Private Sub ZlecenieZakonczone(ByVal IdZlecenia As Integer, ByVal WyznKopiowania As Boolean)

        If mvarUzytkownik.Uprawnienia("biuro") = 10 Or mvarUzytkownik.Uprawnienia("biuro") = 1 Then
            grbTylkoDoOdczytu.Visible = True
            grbInformacjePodstawowePr.Size = New Size(374, 179)
            grbInformacjePodstawowe.Enabled = False
            grbDanePozycjiZlecenia.Enabled = False
            pnlPrzyciskiEdycji.Enabled = False
            cmdZapisz.Enabled = False
            cmdWydruk.Enabled = False
            cmdExcel.Enabled = False
            cmdPotwierdzenie.Enabled = False
            mvarWyznTylkoDoOdczytu = True
        Else
            mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, IdZlecenia, "oem.zlecenie", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
            mvarWyznTylkoDoOdczytu = False
            cmbStatusZlecenia.Enabled = True
            If Not mvarBlokowanie.RecordLocked Then
                MessageBox.Show("TYLKO DO ODCZYTU", "WIREMET")
                Blokowanie()
            End If
        End If
        UzupelnienieDanych(WyznKopiowania)
        mvarChanged = False
    End Sub

    Private Sub ZlecenieReazlizowane(ByVal IdZlecenia As Integer, ByVal WyznKopiowania As Boolean)

        If mvarUzytkownik.Uprawnienia("biuro") = 1 Then
            grbTylkoDoOdczytu.Visible = True
            grbInformacjePodstawowePr.Size = New Size(374, 179)
            grbInformacjePodstawowe.Enabled = False
            grbDanePozycjiZlecenia.Enabled = False
            pnlPrzyciskiEdycji.Enabled = False
            cmdZapisz.Enabled = False
            cmdWydruk.Enabled = False
            cmdExcel.Enabled = False
            cmdPotwierdzenie.Enabled = False
            mvarWyznTylkoDoOdczytu = True
        Else
            mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, IdZlecenia, "oem.zlecenie", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
            mvarWyznTylkoDoOdczytu = False
            cmbStatusZlecenia.Enabled = True

            If Not mvarBlokowanie.RecordLocked Then
                MessageBox.Show("TYLKO DO ODCZYTU", "WIREMET")
                Blokowanie()
            End If
        End If
        UzupelnienieDanych(WyznKopiowania)
        mvarChanged = False


    End Sub


    Private Sub Blokowanie()
        grbTylkoDoOdczytu.Visible = True
        grbInformacjePodstawowePr.Size = New Size(374, 179)
        grbInformacjePodstawowe.Enabled = False
        grbDanePozycjiZlecenia.Enabled = False
        pnlPrzyciskiEdycji.Enabled = False
        cmdZapisz.Enabled = False
        cmdWydruk.Enabled = False
        cmdExcel.Enabled = False
        cmdPotwierdzenie.Enabled = False
        mvarWyznTylkoDoOdczytu = True
    End Sub

    Private Sub UzupelnienieDanych(ByVal WyznKopiowania As Boolean)

        Dim lvarIndex As Integer

        lvarIndex = cmbKlient.FindString(mvarZlecenie.Klient.NazwaSkrocona)
        cmbKlient.SelectedIndex = lvarIndex
        txtNazwaPelna.Text = "Nazwa: " & mvarZlecenie.Klient.NazwaPelna & vbNewLine & "Nazwa skrócona: " & mvarZlecenie.Klient.NazwaSkrocona & vbNewLine & "NIP: " & mvarZlecenie.Klient.Nip & vbNewLine & "Termin płatności: " & mvarZlecenie.Klient.TerminPlatnosci & vbNewLine & "Sposób wysyłki: " & mvarZlecenie.Klient.Wysylka & vbNewLine & "Adres: " & Trim(mvarZlecenie.Klient.Ulica) & " " & Trim(mvarZlecenie.Klient.Numer) & ", " & mvarZlecenie.Klient.KodPocztowy & " " & Trim(mvarZlecenie.Klient.Miejscowosc) & ", " & mvarZlecenie.Klient.Kraj & vbNewLine & "Telefon: " & mvarZlecenie.Klient.Telefon & vbNewLine & "Email: " & mvarZlecenie.Klient.Email

        txtNumerZamowieniaKlienta.Text = mvarZlecenie.NumerZamowieniaKlienta
        dtpDataZlozenia.Value = mvarZlecenie.DataZamowienia
        dtpDataRealizacji.Value = mvarZlecenie.Termin
        lvarIndex = cmbSposobZmowienia.FindString(mvarZlecenie.SposobZamowienia.Nazwa)
        cmbSposobZmowienia.SelectedIndex = lvarIndex
        txtUwagiZlecenia.Text = mvarZlecenie.Uwagi

        txtPracownik.Text = mvarZlecenie.Pracownik.Nazwisko
        lvarIndex = cmbAdresWysylki.FindString(mvarZlecenie.AdresWysylki.NazwaSkrocona)
        cmbAdresWysylki.SelectedIndex = lvarIndex
        txtStatusWysylki.Text = mvarZlecenie.StatusWysylki.Nazwa
        If mvarZlecenie.OfertaId <> 0 Then
            txtNumerOferty.Text = mvarZlecenie.Oferta.Numer
        End If

        If WyznKopiowania Then
            txtNumerZLecenia.Text = "NOWE ZLECENIE"
            txtPracownik.Text = mvarUzytkownik.Nazwisko
            dtpData_Utworzenia.Value = Today.Date
            dtpDataZlozenia.Value = Today.Date
            dtpDataRealizacji.Value = Today.Date
            cmbStatusZlecenia.SelectedIndex = 0
            cmbStatusZlecenia.Enabled = False
            mvarZlecenie.Tracking = 0
        Else
            mvarWyznEdycji = True
            Me.Text = "WIREMET - EDYCJA ZLECENIA"
            txtNumerZLecenia.Text = mvarZlecenie.Numer
            dtpData_Utworzenia.Value = mvarZlecenie.DataUtworzenia
            For lvarI As Integer = 0 To cmbStatusZlecenia.Items.Count - 1
                If CType(cmbStatusZlecenia.Items(lvarI), clsStatus).Id = mvarZlecenie.SatusID Then
                    cmbStatusZlecenia.SelectedIndex = lvarI
                End If
            Next
        End If

        'Uzupelnienie pozycji zlecenia
        WyczyscPozycje()
        mvarI = 0

        For Each lvarPozycja As clsInhPozycjaZlecenia In mvarZlecenie.PozycjeZlecenia
            mvarI += 1
            dgvInformacje.Rows.Add(mvarI, lvarPozycja.PowierzonyMaterial, lvarPozycja.MaterialOgolnie.NazwaAng, lvarPozycja.Wymiar, lvarPozycja.TolDolna, lvarPozycja.TolGorna, lvarPozycja.Wydluzenie, lvarPozycja.WytrzymaloscMin, lvarPozycja.WytrzymaloscMax, lvarPozycja.Ilosc, lvarPozycja.Jednostka.Jednostka, lvarPozycja.Swiadectwo, lvarPozycja.Pakowaie.Nazwa, lvarPozycja.CenaOpakowania, FormatowanieLiczby(lvarPozycja.Cena), lvarPozycja.Waluta.Nazwa, lvarPozycja.Magazyn.Nazwa, lvarPozycja.Uwagi)
            dgvInformacje.Rows(mvarI - 1).Tag = lvarPozycja

            If mvarZlecenie.Tracking = 1 Then
                For Each lvarTrPozycja As clsInhTrPozycjaZlecenia In mvarTrZlecenie.PozycjeZlecenia
                    If lvarTrPozycja.OemId = lvarPozycja.Id Then
                        Select Case lvarTrPozycja.StatusId
                            Case 4
                                dgvInformacje.Rows.Item(mvarI - 1).DefaultCellStyle.BackColor = Color.FromArgb(219, 238, 243)
                            Case 5
                                dgvInformacje.Rows.Item(mvarI - 1).DefaultCellStyle.BackColor = Color.FromArgb(147, 205, 221)
                            Case 6
                                dgvInformacje.Rows.Item(mvarI - 1).DefaultCellStyle.BackColor = Color.FromArgb(49, 132, 155)
                            Case 7
                                dgvInformacje.Rows.Item(mvarI - 1).DefaultCellStyle.BackColor = Color.FromArgb(37, 64, 97)
                        End Select
                    End If
                Next
            End If
        Next
        If dgvInformacje.Rows.Count > 0 Then
            dgvInformacje.ClearSelection()
        End If
        If WyznKopiowania Then
            mvarZlecenie.ID = -1
            For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
                CType(lvarRow.Tag, clsInhPozycjaZlecenia).Id = -1
                CType(lvarRow.Tag, clsInhPozycjaZlecenia).ZlecenieId = -1
            Next
            mvarZlecenie.Wysylka.Clear()
            txtStatusWysylki.Text = "nie rozpoczęta"
        End If

    End Sub

    Private Sub UzupelnienieDanychZOferty(ByVal WyznKopiowania As Integer)

        Dim lvarIndex As Integer

        lvarIndex = cmbKlient.FindString(mvarOferta.Klient.NazwaSkrocona)
        cmbKlient.SelectedIndex = lvarIndex
        txtNazwaPelna.Text = "Nazwa: " & mvarOferta.Klient.NazwaPelna & vbNewLine & "Nazwa skrócona: " & mvarOferta.Klient.NazwaSkrocona & vbNewLine & "NIP: " & mvarOferta.Klient.Nip & vbNewLine & "Termin płatności: " & mvarOferta.Klient.TerminPlatnosci & vbNewLine & "Sposób wysyłki: " & mvarOferta.Klient.Wysylka & vbNewLine & "Adres: " & Trim(mvarOferta.Klient.Ulica) & " " & Trim(mvarOferta.Klient.Numer) & ", " & mvarOferta.Klient.KodPocztowy & " " & Trim(mvarOferta.Klient.Miejscowosc) & ", " & mvarOferta.Klient.Kraj & vbNewLine & "Telefon: " & mvarOferta.Klient.Telefon & vbNewLine & "Email: " & mvarOferta.Klient.Email

        txtNumerOferty.Text = mvarOferta.Numer
        dtpDataZlozenia.Value = Today.Date
        dtpDataRealizacji.Value = DateAdd(DateInterval.Day, CInt(mvarOferta.CzasRealizacji), Today.Date)
        txtUwagiZlecenia.Text = mvarOferta.Uwagi

        txtPracownik.Text = mvarOferta.Pracownik.Nazwisko

        If WyznKopiowania = 3 Then
            txtNumerZLecenia.Text = "NOWE ZLECENIE"
            txtPracownik.Text = mvarUzytkownik.Nazwisko
            dtpData_Utworzenia.Value = Today.Date
            dtpDataZlozenia.Value = Today.Date
            dtpDataRealizacji.Value = DateAdd(DateInterval.Day, CInt(mvarOferta.CzasRealizacji), Today.Date)
            cmbStatusZlecenia.SelectedIndex = 0
            cmbStatusZlecenia.Enabled = False
            cmbSposobZmowienia.SelectedIndex = 3
        End If

        'Uzupelnienie pozycji zlecenia
        WyczyscPozycje()
        mvarI = 0
        Dim lvarNowaPozycjaZlecenia As clsInhPozycjaZlecenia
        For Each lvarPozycja As clsInhPozycjaOferty In mvarOferta.PozycjeOferty
            lvarNowaPozycjaZlecenia = New clsInhPozycjaZlecenia
            With lvarNowaPozycjaZlecenia
                .Cena = CStr(CDbl(lvarPozycja.Cena) - (lvarPozycja.Rabat / 100.0) * CDbl(lvarPozycja.Cena))
                .CenaOpakowania = lvarPozycja.CenaOpakowania
                .GatunekId = lvarPozycja.GatunekId
                .NumerPozycji = lvarPozycja.NumerPozycji
                .Id = -1
                .Ilosc = lvarPozycja.Ilosc
                .Jednostka = lvarPozycja.Jednostka
                .Magazyn = lvarPozycja.Magazyn
                .MaterialOgolnie = lvarPozycja.MaterialOgolnie
                .Pakowaie = lvarPozycja.Pakowaie
                .PakowaniaId = lvarPozycja.PakowaniaId
                .PowierzonyMaterial = lvarPozycja.PowierzonyMaterial
                .Swiadectwo = lvarPozycja.Swiadectwo
                .TolDolna = lvarPozycja.TolDolna
                .TolGorna = lvarPozycja.TolGorna
                .Uwagi = lvarPozycja.Uwagi
                .Waluta = lvarPozycja.Waluta
                .WalutaId = lvarPozycja.WalutaId
                .Wydluzenie = lvarPozycja.Wydluzenie
                .Wymiar = lvarPozycja.Wymiar
                .WytrzymaloscMax = lvarPozycja.WytrzymaloscMax
                .WytrzymaloscMin = lvarPozycja.WytrzymaloscMin
                .MagazynId = lvarPozycja.MagazynId
                .JednostkaMiaryId = lvarPozycja.JednostkaMiaryId
            End With
            mvarI += 1
            dgvInformacje.Rows.Add(mvarI, lvarPozycja.PowierzonyMaterial, lvarPozycja.MaterialOgolnie.NazwaAng, lvarPozycja.Wymiar, lvarPozycja.TolDolna, lvarPozycja.TolGorna, lvarPozycja.Wydluzenie, lvarPozycja.WytrzymaloscMin, lvarPozycja.WytrzymaloscMax, lvarPozycja.Ilosc, lvarPozycja.Jednostka.Jednostka, lvarPozycja.Swiadectwo, lvarPozycja.Pakowaie.Nazwa, lvarPozycja.CenaOpakowania, FormatowanieLiczby(lvarPozycja.Cena), lvarPozycja.Waluta.Nazwa, lvarPozycja.Magazyn.Nazwa, lvarPozycja.Uwagi)
            dgvInformacje.Rows(mvarI - 1).Tag = lvarNowaPozycjaZlecenia
        Next
        If dgvInformacje.Rows.Count > 0 Then
            dgvInformacje.ClearSelection()
        End If
        txtStatusWysylki.Text = "nie rozpoczęta"
    End Sub



    Function FormatowanieLiczby(ByVal Liczba As String) As String

        Dim lvarWynik As String
        Dim lvarTmp As String

        lvarTmp = Replace(Liczba, ".", ",")
        If CBool(InStr(lvarTmp, ",")) Then
            If InStr(lvarTmp, ",") + 2 <= lvarTmp.Length Then
                lvarWynik = lvarTmp.Substring(0, InStr(lvarTmp, ",") + 2)
            Else
                lvarWynik = lvarTmp & "0"
            End If
        Else
            lvarWynik = lvarTmp & ",00"
        End If

        Return lvarWynik

    End Function

    Private Sub SprawdzLiczbeZmiennoprzecinkowa(ByVal Liczba1 As String)

        If Liczba1 <> String.Empty And IsNumeric(Liczba1) Then
            If CDbl(Liczba1) > 0 Then
                mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej = True
            Else
                mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej = False
            End If
        Else
            mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej = False
        End If

    End Sub

    Function Sprawdz(ByVal Liczba As String) As Boolean

        If Liczba <> String.Empty And IsNumeric(Liczba) Then
            If CDbl(Liczba) >= 0 Then
                Return True
            Else
                Return False
            End If
        Else
            Return False
        End If

    End Function

    Function SprawdzUjemna(ByVal Liczba As String) As Boolean

        If Liczba <> String.Empty And IsNumeric(Liczba) Then
            Return True
        Else
            Return False
        End If

    End Function

    Private Sub WyczyscInformacjePodstawowe()

        cmbKlient.SelectedIndex = -1
        dtpDataZlozenia.Value = Now
        dtpDataRealizacji.Value = Now
        cmbSposobZmowienia.SelectedIndex = 1
        txtUwagiZlecenia.Text = String.Empty
        txtNumerZLecenia.Text = "NOWE ZLECENIE"
        cmbStatusZlecenia.SelectedIndex = 0
        cmbAdresWysylki.Items.Clear()
        txtPracownik.Text = mvarUzytkownik.Nazwisko
        txtNumerZamowieniaKlienta.Text = "-"
        txtStatusWysylki.Text = "nie rozpoczęta"

    End Sub

    Private Sub WyczyscPozycje()

        chkPowierzony.Checked = False
        cmbMaterial.SelectedIndex = -1
        txtWymiar.Text = String.Empty
        txtTolDolna.Text = String.Empty
        txtTolGorna.Text = String.Empty
        txtWytrzymaloscMin.Text = String.Empty
        txtWytrzymaloscMax.Text = String.Empty
        txtWydluzenie.Text = String.Empty
        txtIlosc.Text = String.Empty
        cmbJednostka.SelectedIndex = 0
        chkSwiadectwo.Checked = False
        txtCena.Text = "0,00"
        txtUwagi.Text = String.Empty
        cmbPakowanie.SelectedIndex = -1
        txtCenaPakowania.Text = "0,00"
        cmbWaluta.SelectedIndex = 1
        chkOpakowanieDoZaplaty.Checked = False
        cmbMagazyn.SelectedIndex = -1

    End Sub


    Private Sub Zapisz()

        If dgvInformacje.Rows.Count = 0 Or cmbKlient.SelectedIndex = -1 Then
            MessageBox.Show("Jeśli chcesz zapisać zlecenie do bazy podaj wszystkie konieczne informacje?", "WIREMET")
            mvarCancel = True
        Else
            If cmbKlient.SelectedIndex = -1 Or cmbSposobZmowienia.SelectedIndex = -1 Or cmbAdresWysylki.SelectedIndex = -1 Then
                MessageBox.Show("Podaj wszystkie informacje podstawowe!", "WIREMET")
            ElseIf mvarZlecenie.Tracking <> 1 Then

                mvarDbHolder.BeginTrans()
                If mvarZlecenie.ID = -1 Then
                    mvarZlecenie.Numer = clsNumerZlecenia.PobierzNumerZlecenia(mvarDbHolder, VAR_ERROR_HANDLER)
                End If

                With mvarZlecenie
                    .KlientID = CType(cmbKlient.SelectedItem, clsKlient).Id
                    .PracownikID = mvarUzytkownik.Id
                    .SposobZamowieniaId = CType(cmbSposobZmowienia.SelectedItem, clsSposobZamowienia).Id
                    .DataUtworzenia = dtpData_Utworzenia.Value
                    .DataZamowienia = dtpDataZlozenia.Value
                    .Termin = dtpDataRealizacji.Value
                    .SatusID = CType(cmbStatusZlecenia.SelectedItem, clsStatus).Id
                    .Uwagi = txtUwagiZlecenia.Text
                    .AdresWysylkiId = CType(cmbAdresWysylki.SelectedItem, clsAdresWysylki).Id
                    .NumerZamowieniaKlienta = txtNumerZamowieniaKlienta.Text
                    .OfertaId = mvarIDOferty
                    If mvarZlecenie.ID = -1 Then
                        .StatusWysylkiID = 1
                    End If
                    .PozycjeZlecenia.Clear()
                    For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
                        .PozycjeZlecenia.Add(CType(lvarRow.Tag, clsInhPozycjaZlecenia))
                    Next
                    .Save(mvarDbHolder)
                End With
                If mvarWyznKopiowania = 3 Then
                    mvarOferta.StatusOfertyId = 3
                    mvarOferta.Save(mvarDbHolder)
                End If
                mvarDbHolder.CommitTrans()
                WyczyscInformacjePodstawowe()
                WyczyscPozycje()
                dgvInformacje.Rows.Clear()
                mvarZlecenie = New clsInhZlecenie(mvarZlecenie.ID, mvarDbHolder)
                mvarWyznKopiowania = CInt(False)
                UzupelnienieDanych(CBool(mvarWyznKopiowania))
                mvarChanged = False
                MessageBox.Show("Zapisano do bazy.", "WIREMET")
                mvarCancel = False
            Else
                ZapiszTracking()
            End If
        End If

    End Sub

    Private Sub cmdKlient_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdKlient.Click

        If cmbKlient.SelectedIndex = -1 Then
            mvarFrmSzukaniaKlienta = New frmKlientSzukanie(True, -1)
            mvarFrmSzukaniaKlienta.ShowDialog()
        Else
            mvarFrmSzukaniaKlienta = New frmKlientSzukanie(True, CType(cmbKlient.SelectedItem, clsKlient).Id)
            mvarFrmSzukaniaKlienta.ShowDialog()
        End If

        cmbKlient.Items.Clear()
        PobierzKlientow()
        If mvarFrmSzukaniaKlienta.dgvInformacje.SelectedRows.Count > 0 Then
            For lvarI As Integer = 0 To cmbKlient.Items.Count - 1
                If CType(cmbKlient.Items(lvarI), clsKlient).Id = CInt(mvarFrmSzukaniaKlienta.dgvInformacje.SelectedRows.Item(0).Cells("colIdKlienta").Value) Then
                    cmbKlient.SelectedIndex = lvarI
                    Exit For
                End If
            Next
        End If

        If cmbKlient.SelectedIndex = -1 Then
            cmbKlient.Focus()
            cmbAdresWysylki.SelectedIndex = -1
        Else
            txtNumerZamowieniaKlienta.Focus()
        End If

    End Sub

    Private Sub cmdOferta_Click(sender As Object, e As EventArgs) Handles cmdOferta.Click
        If txtNumerOferty.Text <> String.Empty Then
            If mvarZlecenie.Oferta.ID <> 0 Then
                mvarFrmOferta = New frmOferty(mvarZlecenie.Oferta.ID, False)
                mvarFrmOferta.ShowDialog()
            End If
        End If
    End Sub

    Private Sub dgvInformacje_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseClick

        Dim lvarIndex As Integer

        If dgvInformacje.SelectedRows.Count > 0 Then
            WyczyscPozycje()
            mvarPozycjeId = dgvInformacje.CurrentRow.Index
            chkPowierzony.Checked = CBool(dgvInformacje.SelectedRows.Item(0).Cells("colInfPowierzonyMaterial").Value)
            lvarIndex = cmbMaterial.FindString(CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfMaterial").Value))
            cmbMaterial.SelectedIndex = lvarIndex
            txtWymiar.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfWymiar").Value)
            txtTolDolna.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfTolDolna").Value)
            txtTolGorna.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfTolGorna").Value)
            txtWytrzymaloscMin.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfWytrzymaloscMin").Value)
            txtWytrzymaloscMax.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfWytrzymaloscMax").Value)
            txtWydluzenie.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfWydluzenie").Value)
            txtIlosc.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfIlosc").Value)
            lvarIndex = cmbJednostka.FindString(CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfJednostka").Value))
            cmbJednostka.SelectedIndex = lvarIndex
            chkSwiadectwo.Checked = CBool(dgvInformacje.SelectedRows.Item(0).Cells("colInfSwiadectwo").Value)
            txtCena.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfCena").Value)
            txtUwagi.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfUwagi").Value)
            lvarIndex = cmbPakowanie.FindString(CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfPakowanie").Value))
            cmbPakowanie.SelectedIndex = lvarIndex
            chkOpakowanieDoZaplaty.Checked = CType(dgvInformacje.SelectedRows.Item(0).Tag, clsInhPozycjaZlecenia).CenaOpakowania
            lvarIndex = cmbWaluta.FindString(CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfWaluta").Value))
            cmbWaluta.SelectedIndex = lvarIndex
            lvarIndex = cmbMagazyn.FindString(CStr(dgvInformacje.SelectedRows.Item(0).Cells("colInfMagazyn").Value))
            cmbMagazyn.SelectedIndex = lvarIndex

            'cmdSchematProdukcji.Enabled = True
            cmdZmien.Enabled = True
            cmdUsun.Enabled = True
            If mvarZlecenie.Tracking = 1 Then
                If mvarTrZlecenie.StatusId <> 1 Then
                    txtWymiar.Enabled = False
                    cmbMaterial.Enabled = False
                    chkPowierzony.Enabled = False
                    cmdUsun.Text = "ANULUJ"
                    'cmdSchematProdukcji.Enabled = True
                    'cmdUsun.Enabled = False
                End If
                For Each lvarTrPozycja As clsInhTrPozycjaZlecenia In mvarTrZlecenie.PozycjeZlecenia
                    If lvarTrPozycja.OemId = CType(dgvInformacje.SelectedRows(0).Tag, clsInhPozycjaZlecenia).Id Then
                        If lvarTrPozycja.StatusId = 7 Then
                            grbPrzyciskiEdycji.Enabled = False
                            grbDanePozycjiZlecenia.Enabled = False
                        ElseIf lvarTrPozycja.StatusId <> 4 Then
                            txtWymiar.Enabled = True
                            cmbMaterial.Enabled = True
                            chkPowierzony.Enabled = True
                            cmdUsun.Text = "USUŃ"
                            grbPrzyciskiEdycji.Enabled = True
                            grbDanePozycjiZlecenia.Enabled = True
                        End If
                    End If
                Next
                cmdSchematProdukcji.Enabled = True
            End If

        End If

    End Sub

    Private Sub dgvInformacje_CellMouseDoubleClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseDoubleClick

        Dim lvarTrPozycjaId As Integer

        If dgvInformacje.SelectedRows.Count > 0 And mvarZlecenie.Tracking = 1 Then

            For Each lvarTrPozycja As clsInhTrPozycjaZlecenia In mvarTrZlecenie.PozycjeZlecenia
                If lvarTrPozycja.OemId = CType(dgvInformacje.SelectedRows(0).Tag, clsInhPozycjaZlecenia).Id Then
                    lvarTrPozycjaId = lvarTrPozycja.Id
                End If
            Next

            Dim lvarFrm As New frmTrPozycjaZlecenia(CType(cmbKlient.SelectedItem, clsKlient).NazwaSkrocona, dtpDataRealizacji.Value.ToShortDateString, lvarTrPozycjaId, 0, 0, False, False)
            With lvarFrm
                .ShowDialog()
            End With

        End If
    End Sub

    Private Sub txtCenaPakowania_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles txtCenaPakowania.MouseDoubleClick

        If cmbPakowanie.SelectedIndex > -1 And mvarUzytkownik.Uprawnienia("biuro") <> 1 Then

            Dim lvarFrm As New frmPakowanieSzukanie(True, CInt(CType(cmbPakowanie.SelectedItem, clsPakowanie).Id))
            With lvarFrm
                .Location = New Point(300, 300)
                .ShowDialog()
            End With
            cmbPakowanie.Items.Clear()
            PobierzWszystkiePakowania()
            For lvarI As Integer = 0 To cmbPakowanie.Items.Count - 1
                If CType(cmbPakowanie.Items(lvarI), clsPakowanie).Id = lvarFrm.dgvInformacje.SelectedRows.Item(0).Cells("colIdPakowania").ToString() Then
                    cmbPakowanie.SelectedIndex = lvarI
                    txtCenaPakowania.Text = CType(cmbPakowanie.SelectedItem, clsPakowanie).Cena
                    cmbPakowanie.Focus()
                    Exit For
                End If
            Next
        End If

    End Sub


    Private Sub cmdDodajPozycjeZlecenia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDodajPozycjeZlecenia.Click

        Dim lvarCena As String
        Dim lvarCenaPakowania As String
        lvarCena = Replace(txtCena.Text, ",", ".")
        lvarCenaPakowania = Replace(txtCenaPakowania.Text, ",", ".")

        If Not Sprawdz(txtWymiar.Text) Or Not SprawdzUjemna(txtTolGorna.Text) Or Not SprawdzUjemna(txtTolDolna.Text) Or Not Sprawdz(txtWytrzymaloscMin.Text) Or Not Sprawdz(txtWytrzymaloscMax.Text) Or Not Sprawdz(txtWydluzenie.Text) Or cmbMaterial.SelectedIndex = -1 Or Not Sprawdz(txtIlosc.Text) Or cmbJednostka.SelectedIndex = -1 Or cmbPakowanie.SelectedIndex = -1 Or Not Sprawdz(txtCenaPakowania.Text) Or cmbWaluta.SelectedIndex = -1 Or Not Sprawdz(txtCena.Text) Or cmbMagazyn.SelectedIndex = -1 Then
            MessageBox.Show("Wpisz poprawnie dane.", "WIREMET")
            cmbMaterial.Focus()
        Else
            mvarI = dgvInformacje.Rows.Count

            Dim lvarNowaPozycja As New clsInhPozycjaZlecenia()
            With lvarNowaPozycja
                .ZlecenieId = mvarZlecenie.ID
                .NumerPozycji = CStr(mvarI + 1)
                .PowierzonyMaterial = chkPowierzony.Checked
                .GatunekId = CType(cmbMaterial.SelectedItem, clsGatunek).Id
                .Wymiar = Trim(txtWymiar.Text)
                .TolDolna = Trim(txtTolDolna.Text)
                .TolGorna = Trim(txtTolGorna.Text)
                .Wydluzenie = Trim(txtWydluzenie.Text)
                .WytrzymaloscMin = Trim(txtWytrzymaloscMin.Text)
                .WytrzymaloscMax = Trim(txtWytrzymaloscMax.Text)
                .Ilosc = Trim(txtIlosc.Text)
                .JednostkaMiaryId = CType(cmbJednostka.SelectedItem, clsJednostkaMiary).Id
                .Swiadectwo = chkSwiadectwo.Checked
                .PakowaniaId = CInt(CType(cmbPakowanie.SelectedItem, clsPakowanie).Id)
                .CenaOpakowania = chkOpakowanieDoZaplaty.Checked
                .Cena = Trim(lvarCena)
                .WalutaId = CInt(CType(cmbWaluta.SelectedItem, clsWaluta).Id)
                .MagazynId = CType(cmbMagazyn.SelectedItem, clsMagazyn).Id
                .Uwagi = Trim(txtUwagi.Text)
            End With
            dgvInformacje.Rows.Add(mvarI + 1, chkPowierzony.Checked, CType(cmbMaterial.SelectedItem, clsGatunek).Nazwa, Trim(txtWymiar.Text), Trim(txtTolDolna.Text), Trim(txtTolGorna.Text), Trim(txtWydluzenie.Text), Trim(txtWytrzymaloscMin.Text), Trim(txtWytrzymaloscMax.Text), Trim(txtIlosc.Text), CType(cmbJednostka.SelectedItem, clsJednostkaMiary).Jednostka, chkSwiadectwo.Checked, CType(cmbPakowanie.SelectedItem, clsPakowanie).Nazwa, chkOpakowanieDoZaplaty.Checked, Trim(txtCena.Text), CType(cmbWaluta.SelectedItem, clsWaluta).Nazwa, CType(cmbMagazyn.SelectedItem, clsMagazyn).Nazwa, Trim(txtUwagi.Text))
            dgvInformacje.Rows(mvarI).Tag = lvarNowaPozycja
            WyczyscPozycje()

            If dgvInformacje.Rows.Count > 0 Then
                dgvInformacje.ClearSelection()
                dgvInformacje.Rows(dgvInformacje.Rows.Count - 1).Selected = True
                If dgvInformacje.Rows.Count > 3 Then
                    dgvInformacje.FirstDisplayedScrollingRowIndex = dgvInformacje.Rows.Count - 3
                Else
                    dgvInformacje.FirstDisplayedScrollingRowIndex = 0
                End If
            End If

            cmbMaterial.Focus()
            dgvInformacje.ClearSelection()
            cmdZmien.Enabled = False
            cmdUsun.Enabled = False
            cmdSchematProdukcji.Enabled = False
            mvarChanged = True
        End If
        cmdZapisz.Enabled = True

    End Sub

    Private Sub cmdWyczysc_Click(sender As System.Object, e As System.EventArgs) Handles cmdWyczysc.Click

        WyczyscPozycje()

    End Sub

    Private Sub cmdZmien_Click(sender As System.Object, e As System.EventArgs) Handles cmdZmien.Click

        If Not Sprawdz(txtWymiar.Text) Or Not SprawdzUjemna(txtTolGorna.Text) Or Not SprawdzUjemna(txtTolDolna.Text) Or Not Sprawdz(txtWytrzymaloscMin.Text) Or Not Sprawdz(txtWytrzymaloscMax.Text) Or Not Sprawdz(txtWydluzenie.Text) Or cmbMaterial.SelectedIndex = -1 Or Not Sprawdz(txtIlosc.Text) Or cmbJednostka.SelectedIndex = -1 Or cmbPakowanie.SelectedIndex = -1 Or Not Sprawdz(txtCenaPakowania.Text) Or cmbWaluta.SelectedIndex = -1 Or Not Sprawdz(txtCena.Text) Or cmbMagazyn.SelectedIndex = -1 Then
            MessageBox.Show("Wpisz poprawnie dane", "WIREMET")
        Else
            With CType(dgvInformacje.SelectedRows.Item(0).Tag, clsInhPozycjaZlecenia)
                .PowierzonyMaterial = chkPowierzony.Checked
                .GatunekId = CType(cmbMaterial.SelectedItem, clsGatunek).Id
                .Wymiar = Trim(txtWymiar.Text)
                .TolDolna = Trim(txtTolDolna.Text)
                .TolGorna = Trim(txtTolGorna.Text)
                .WytrzymaloscMin = Trim(txtWytrzymaloscMin.Text)
                .WytrzymaloscMax = Trim(txtWytrzymaloscMax.Text)
                .Wydluzenie = Trim(txtWydluzenie.Text)
                .Ilosc = Trim(txtIlosc.Text)
                .JednostkaMiaryId = CType(cmbJednostka.SelectedItem, clsJednostkaMiary).Id
                .Swiadectwo = chkSwiadectwo.Checked
                .Cena = Replace(txtCena.Text, ",", ".")
                .Uwagi = Trim(txtUwagi.Text)
                .PakowaniaId = CInt(CType(cmbPakowanie.SelectedItem, clsPakowanie).Id)
                .CenaOpakowania = chkOpakowanieDoZaplaty.Checked
                .WalutaId = CInt(CType(cmbWaluta.SelectedItem, clsWaluta).Id)
                .MagazynId = CType(cmbMagazyn.SelectedItem, clsMagazyn).Id
            End With

            With dgvInformacje.Rows.Item(mvarPozycjeId)
                .Cells("colInfPowierzonyMaterial").Value = chkPowierzony.Checked
                .Cells("colInfMaterial").Value = CType(cmbMaterial.SelectedItem, clsGatunek).Nazwa
                .Cells("colInfWymiar").Value = Trim(txtWymiar.Text)
                .Cells("colInfTolDolna").Value = Trim(txtTolDolna.Text)
                .Cells("colInfTolGorna").Value = Trim(txtTolGorna.Text)
                .Cells("colInfWytrzymaloscMin").Value = Trim(txtWytrzymaloscMin.Text)
                .Cells("colInfWytrzymaloscMax").Value = Trim(txtWytrzymaloscMax.Text)
                .Cells("colInfWydluzenie").Value = Trim(txtWydluzenie.Text)
                .Cells("colInfIlosc").Value = Trim(txtIlosc.Text)
                .Cells("colInfJednostka").Value = CType(cmbJednostka.SelectedItem, clsJednostkaMiary).Jednostka
                .Cells("colInfSwiadectwo").Value = chkSwiadectwo.Checked
                .Cells("colInfCena").Value = Trim(txtCena.Text)
                .Cells("colInfUwagi").Value = Trim(txtUwagi.Text)
                .Cells("colInfPakowanie").Value = CType(cmbPakowanie.SelectedItem, clsPakowanie).Nazwa
                .Cells("colInfOplataZaOpakowanie").Value = chkOpakowanieDoZaplaty.Checked
                .Cells("colInfWaluta").Value = CType(cmbWaluta.SelectedItem, clsWaluta).Nazwa
                .Cells("colInfMagazyn").Value = CType(cmbMagazyn.SelectedItem, clsMagazyn).Nazwa
                If mvarZlecenie.Tracking = 1 Then
                    .Cells("colInfZmiana").Value = True
                End If
            End With

            cmdZmien.Enabled = False
            cmdUsun.Enabled = False
            cmdSchematProdukcji.Enabled = False
            mvarChanged = True
            WyczyscPozycje()
            dgvInformacje.ClearSelection()
        End If

    End Sub

    Private Sub cmdUsun_Click(sender As System.Object, e As System.EventArgs) Handles cmdUsun.Click

        Dim lvarIndexPoczatkowy As Integer
        Dim lvarPozycjeWysylki As New clsInhPozycjeWysylki
        If dgvInformacje.Rows.Count = 1 Then
            MessageBox.Show("Nie można usunąć wszystkich pozycji", "WIREMET")
        ElseIf dgvInformacje.Rows.Count > 0 Then

            If mvarZlecenie.Tracking = 1 Then

                ZmienStatusTrackingu()

            Else
                If lvarPozycjeWysylki.SprawdzPozycjeWysylki(mvarDbHolder, VAR_ERROR_HANDLER, CType(dgvInformacje.SelectedRows.Item(0).Tag, clsInhPozycjaZlecenia).Id) = -1 Then
                    lvarIndexPoczatkowy = dgvInformacje.CurrentRow.Index
                    mvarZlecenie.PozycjeZleceniaDel.Add(CType(dgvInformacje.CurrentRow.Tag, clsInhPozycjaZlecenia))
                    'If mvarZlecenie.Tracking = 1 Then
                    '    mvarTrZlecenie.PozycjeZleceniaDel.Add()
                    'End If
                    dgvInformacje.Rows.Remove(dgvInformacje.CurrentRow)
                    For lvarI As Integer = lvarIndexPoczatkowy To dgvInformacje.Rows.Count - 1
                        dgvInformacje.Rows.Item(lvarI).Cells("colInfLp").Value = CInt(dgvInformacje.Rows.Item(lvarI).Cells("colInfLp").Value) - 1
                    Next
                    dgvInformacje.ClearSelection()
                    cmdUsun.Enabled = False
                    cmbMaterial.Focus()
                    mvarChanged = True
                Else
                    MessageBox.Show("Nie można usunąć danej pozycji," & vbNewLine & "została ona już zrealizowana i wysłana do klienta.", "WIREMET")
                End If
            End If

        End If
    End Sub

    Private Sub cmdSchematProdukcji_Click(sender As Object, e As EventArgs) Handles cmdSchematProdukcji.Click

        Dim lvarTrPozycjaId As Integer
        If dgvInformacje.SelectedRows.Count > 0 Then

            For Each lvarTrPozycja As clsInhTrPozycjaZlecenia In mvarTrZlecenie.PozycjeZlecenia
                If lvarTrPozycja.OemId = CType(dgvInformacje.SelectedRows(0).Tag, clsInhPozycjaZlecenia).Id Then
                    lvarTrPozycjaId = lvarTrPozycja.Id
                End If
            Next

            Dim lvarFrm As New frmTrPozycjaZlecenia(CType(cmbKlient.SelectedItem, clsKlient).NazwaSkrocona, dtpDataRealizacji.Value.ToShortDateString, lvarTrPozycjaId, 0, 0, False, False)
            With lvarFrm
                .ShowDialog()
            End With
        End If

    End Sub


    Private Sub cmdPotwierdzenie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPotwierdzenie.Click

        If Not mvarChanged And mvarZlecenie.ID > -1 Then
            Dim lvarFrm As New frmPotwierdzeniaZlecenia(mvarZlecenie.ID)
            With lvarFrm
                .ShowDialog()
            End With
        Else
            If mvarZlecenie.ID > -1 Then
                MessageBox.Show("Wprowadzono zmiany.", "WIREMET")
            Else
                MessageBox.Show("Nie zapisano zlecenia do bazy.", "WIREMET")
            End If
            cmdZapisz.Focus()
        End If

    End Sub

    Private Sub cmdExcel_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdExcel.Click

        Dim lvarPathExcel As String
        Dim lvarPathExcelSave As String

        If Environ("ComputerName") = "PRODUKCJA_1" Then
            lvarPathExcel = VAR_PATH_PRODUKCJA_1 & "\Excel\wzor.xlsm"
            lvarPathExcelSave = VAR_PATH_SAVE_PRODUKCJA_1
        Else
            lvarPathExcel = VAR_PATH & "\Excel\wzor.xlsm"
            lvarPathExcelSave = VAR_PATH_SAVE
        End If

        If Not mvarChanged And mvarZlecenie.ID > -1 Then
            Try

                For Each lvarRow As DataGridViewRow In dgvInformacje.Rows

                    Dim excelApp As New Excel.Application
                    Dim excelBook As Excel.Workbook = excelApp.Workbooks.Open(lvarPathExcel)
                    Dim excelSheet As Excel.Worksheet
                    excelApp.Visible = True
                    excelSheet = CType(excelBook.Sheets("Przyg"), Excel.Worksheet)
                    With excelSheet
                        'DATA UTWORZENIA
                        .Cells(1, 5).Value = mvarZlecenie.DataUtworzenia
                        'ZAMAWIAJACY
                        .Cells(2, 5).Value = mvarZlecenie.Klient.NazwaSkrocona
                        'TRANSPORT
                        If txtUwagi.Text = String.Empty Then
                            .Cells(3, 5).Value = mvarZlecenie.Klient.Wysylka
                        Else
                            .Cells(3, 5).Value = mvarZlecenie.Uwagi
                        End If
                        'PLATNOSC
                        .Cells(4, 5).Value = mvarZlecenie.Klient.TerminPlatnosci
                        'NR ZLECENIA KLIENTA
                        .Cells(5, 5).Value = mvarZlecenie.NumerZamowieniaKlienta
                        'TERMIN
                        .Cells(6, 5).Value = mvarZlecenie.Termin
                        'ZLECENIE NR
                        .Cells(7, 5).Value = mvarZlecenie.Numer
                        'RODZAJ ZAMOWIENIA
                        .Cells(8, 5).Value = mvarZlecenie.SposobZamowienia.Nazwa
                        'DATA ZAMOWIENIA
                        .Cells(8, 6).Value = mvarZlecenie.DataZamowienia
                        'MATERIAL & GATUNEK & NORMA WYKONANIA
                        If CType(lvarRow.Tag, clsInhPozycjaZlecenia).PowierzonyMaterial Then
                            .Cells(9, 5).Value = "powierzony"
                            .Cells(10, 5).Value = CType(lvarRow.Tag, clsInhPozycjaZlecenia).MaterialOgolnie.NazwaAng
                            .Cells(11, 5).Value = CType(lvarRow.Tag, clsInhPozycjaZlecenia).MaterialOgolnie.NormaWykonania
                        Else
                            .Cells(9, 5).Value = "Wiremet"
                            .Cells(10, 5).Value = CType(lvarRow.Tag, clsInhPozycjaZlecenia).MaterialOgolnie.NazwaAng
                            .Cells(11, 5).Value = CType(lvarRow.Tag, clsInhPozycjaZlecenia).MaterialOgolnie.NormaWykonania
                        End If
                        'WYMIAR
                        .Cells(12, 5).Value = Replace(CType(lvarRow.Tag, clsInhPozycjaZlecenia).Wymiar, ",", ".")
                        'TOLERANCJA
                        .Cells(13, 5).Value = Replace(CType(lvarRow.Tag, clsInhPozycjaZlecenia).TolDolna, ",", ".")
                        .Cells(14, 5).Value = Replace(CType(lvarRow.Tag, clsInhPozycjaZlecenia).TolGorna, ",", ".")
                        'SZPULA
                        .Cells(15, 5).Value = CType(lvarRow.Tag, clsInhPozycjaZlecenia).Pakowaie.Nazwa
                        'MAX
                        '  .Cells(16, 5).Value = "-"
                        'RM MAX/ MIN
                        .Cells(17, 5).Value = Replace(CType(lvarRow.Tag, clsInhPozycjaZlecenia).WytrzymaloscMax, ",", ".")
                        .Cells(18, 5).Value = Replace(CType(lvarRow.Tag, clsInhPozycjaZlecenia).WytrzymaloscMin, ",", ".")
                        'WYDLUZENIE MIN
                        .Cells(19, 5).Value = Replace(CType(lvarRow.Tag, clsInhPozycjaZlecenia).Wydluzenie, ",", ".")
                        'ILOSC
                        .Cells(20, 5).Value = Replace(CType(lvarRow.Tag, clsInhPozycjaZlecenia).Ilosc, ",", ".")
                        'SWIADECTWO
                        If CType(lvarRow.Tag, clsInhPozycjaZlecenia).Swiadectwo Then
                            .Cells(21, 5).Value = "tak"
                        Else
                            .Cells(21, 5).Value = "nie"
                        End If
                        'UWAGI
                        .Cells(22, 5).Value = CType(lvarRow.Tag, clsInhPozycjaZlecenia).Uwagi

                        'NAZWA PELNA KLIENTA
                        .Cells(26, 2).Value = mvarZlecenie.Klient.NazwaPelna
                        'ADRES KLIENTA
                        'ULICA
                        .Cells(26, 3).Value = mvarZlecenie.Klient.Ulica
                        'NUMER DOMU
                        .Cells(26, 4).Value = mvarZlecenie.Klient.Numer
                        'KOD POCZTOWY
                        .Cells(26, 5).Value = mvarZlecenie.Klient.KodPocztowy
                        'MIEJSCOWOSC
                        .Cells(26, 6).Value = mvarZlecenie.Klient.Miejscowosc
                        'KRAJ
                        .Cells(26, 7).Value = mvarZlecenie.Klient.Kraj
                        'TELEFON
                        .Cells(27, 2).Value = mvarZlecenie.Klient.Telefon
                        'E'MAIL
                        .Cells(27, 3).Value = mvarZlecenie.Klient.Email

                    End With

                    Dim lvarTmp As String

                    With SaveFileDialog1
                        .InitialDirectory = lvarPathExcelSave
                        .FileName = mvarZlecenie.Numer & "_" & mvarZlecenie.Klient.NazwaSkrocona
                        .DefaultExt = ".xlsm"
                        .Filter = "excel files (*.xlsm)|*.xlsm|All files (*.*)|*.*"
                        .OverwritePrompt = True
                        '.ShowDialog()
                    End With
                    If SaveFileDialog1.ShowDialog = DialogResult.OK Then
                        Try
                            lvarTmp = SaveFileDialog1.FileName
                            excelBook.SaveAs(lvarTmp)
                            excelBook.Close()
                            excelApp.Quit()
                        Catch ex As Exception
                            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
                        End Try
                    End If

                    'If SaveFileDialog1.ShowDialog = DialogResult.OK Then
                    '    Try
                    '        lvarTmp = SaveFileDialog1.FileName
                    '        excelBook.SaveAs(lvarTmp, Excel.XlFileFormat.xlXMLSpreadsheet)
                    '        excelBook.Close()
                    '    Catch ex As Exception
                    '        MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
                    '    End Try
                    'End If
                    'excelBook.SaveAs(lvarTmp, Excel.XlFileFormat.xlXMLSpreadsheet) '(SaveFileDialog1.InitialDirectory & SaveFileDialog1.FileName & SaveFileDialog1.DefaultExt) ', Excel.XlFileFormat.xlXMLSpreadsheet, AccessMode:=Excel.XlSaveAsAccessMode.xlNoChange
                    ' ("C:\Users\MarcinL\Desktop\excel\" & mvarZlecenie.Numer & "_" & mvarZlecenie.Klient.NazwaSkrocona & ".xlsx")
                    'excelBook.Close()
                Next
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        Else
            If mvarZlecenie.ID > -1 Then
                MessageBox.Show("Wprowadzono zmiany.", "WIREMET")
            Else
                MessageBox.Show("Nie zapisano zlecenia do bazy.", "WIREMET")
            End If
            cmdZapisz.Focus()
        End If

    End Sub


    'Function MyFunc(ByVal numer As String) As String ' funkcja do tworzenia kodów kreskowych

    '    Dim sum As Double
    '    Dim res As Double
    '    Dim pos As Integer = 1
    '    Dim startCode As Integer = 205 '209
    '    Dim endCode As Integer = 206 '211
    '    Dim suma_kont As String

    '    If (numer.Length Mod 2) = 0 Then

    '        For lvarI As Integer = 1 To numer.Length
    '            If lvarI Mod 2 <> 0 Then
    '                sum = sum + (CInt(Mid(numer, lvarI, 2)) * pos)
    '                pos = pos + 1
    '            End If
    '        Next
    '        sum = sum + 105
    '        res = (sum Mod 103)
    '        '  Return String.Format("{0}{1}{2}{3}", Chr(startCode), numer, Chr(res + 32), Chr(endCode))

    '        Dim tmp2 As String

    '        For lvarI As Integer = 1 To numer.Length
    '            If lvarI Mod 2 <> 0 Then
    '                tmp2 = tmp2 & Chr(Mid(numer, lvarI, 2) + 32)
    '            End If
    '        Next

    '        If res > 95 Then
    '            res = res + 100
    '            suma_kont = ChrW(res)
    '        Else
    '            suma_kont = Chr(res + 32)
    '        End If

    '        Return String.Format("{0}{1}{2}{3}", Chr(startCode), tmp2, suma_kont, Chr(endCode))

    '    Else

    '        tmp = Mid(numer, 1, numer.Length - 1)
    '        For lvarI As Integer = 1 To tmp.Length
    '            If lvarI Mod 2 <> 0 Then
    '                sum = sum + (CInt(Mid(tmp, lvarI, 2)) * pos)
    '                pos = pos + 1
    '            End If
    '        Next

    '        sum = sum + (100 * pos) + (Asc(Mid(numer, numer.Length, numer.Length)) - 32) * (pos + 1) + 105

    '        res = (sum Mod 103)

    '        Dim tmp2 As String

    '        For lvarI As Integer = 1 To numer.Length - 1
    '            If lvarI Mod 2 <> 0 Then
    '                tmp2 = tmp2 & ChrW(Mid(tmp, lvarI, 2) + 32)
    '            End If
    '        Next
    '        tmp2 = tmp2 & ChrW(200) & Mid(numer, numer.Length, numer.Length)

    '        If res > 95 Then
    '            res = res + 100
    '            suma_kont = ChrW(res)
    '        Else
    '            suma_kont = Chr(res + 32)
    '        End If



    '        Return String.Format("{0}{1}{2}{3}", ChrW(startCode), tmp2, suma_kont, ChrW(endCode))
    '    End If

    'End Function

    Private Sub cmdWydruk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdWydruk.Click

        If Not mvarChanged And mvarZlecenie.ID > -1 Then

            Dim wydrukZleceniaReport As New WydrukZleceniaReport()
            wydrukZleceniaReport.SetParameterValue("p_id_zlecenia", mvarZlecenie.ID)
            Dim reportPreview As New frmPrintViewer(wydrukZleceniaReport, False)
            reportPreview.ShowDialog()

        Else
            If mvarZlecenie.ID > -1 Then
                MessageBox.Show("Wprowadzono zmiany.", "WIREMET")
            Else
                MessageBox.Show("Nie zapisano zlecenia do bazy.", "WIREMET")
            End If
            cmdZapisz.Focus()
        End If

    End Sub

    Private Sub cmdZapisz_Click(sender As System.Object, e As System.EventArgs) Handles cmdZapisz.Click

        If CBool(CInt(mvarChanged) Or mvarWyznKopiowania) Then
            Select Case MsgBox("Czy zapisać zmiany do bazy?", MsgBoxStyle.YesNo, "WIREMET")
                Case MsgBoxResult.No
                    WyczyscInformacjePodstawowe()
                    WyczyscPozycje()
                    dgvInformacje.Rows.Clear()
                    If mvarZlecenie.ID > -1 Then
                        UzupelnienieDanych(CBool(mvarWyznKopiowania))
                    End If
                    mvarChanged = False
                Case MsgBoxResult.Yes
                    Zapisz()
            End Select
        Else
            MessageBox.Show("Nie wprowadzono żadnych zmian.", "WIREMET")
        End If

    End Sub

    Private Sub cmdZamknij_Click(sender As System.Object, e As System.EventArgs) Handles cmdZamknij.Click

        Me.Close()

    End Sub

    Private Sub cmdAnuluj_Click(sender As System.Object, e As System.EventArgs) Handles cmdAnuluj.Click

        mvarChanged = False
        Me.Close()

    End Sub

#Region "Changed"

    Private Sub cmbKlient_TextChanged(sender As Object, e As System.EventArgs) Handles cmbKlient.TextChanged

        mvarChanged = True
        mvarChangedInfZlecenia = True
        If cmbKlient.SelectedIndex = -1 Then
            txtNazwaPelna.Text = String.Empty
        Else
            cmbAdresWysylki.Items.Clear()
            txtNazwaPelna.Text = CType(cmbKlient.SelectedItem, clsKlient).NazwaPelna
            txtNazwaPelna.Text = "Nazwa: " & CType(cmbKlient.SelectedItem, clsKlient).NazwaPelna & vbNewLine & "Nazwa skrócona: " & CType(cmbKlient.SelectedItem, clsKlient).NazwaSkrocona & vbNewLine & "NIP: " & CType(cmbKlient.SelectedItem, clsKlient).Nip & vbNewLine & "Termin płatności: " & CType(cmbKlient.SelectedItem, clsKlient).TerminPlatnosci & vbNewLine & "Sposób wysyłki: " & CType(cmbKlient.SelectedItem, clsKlient).Wysylka & vbNewLine & "Adres: " & Trim(CType(cmbKlient.SelectedItem, clsKlient).Ulica) & " " & Trim(CType(cmbKlient.SelectedItem, clsKlient).Numer) & ", " & CType(cmbKlient.SelectedItem, clsKlient).KodPocztowy & " " & Trim(CType(cmbKlient.SelectedItem, clsKlient).Miejscowosc) & ", " & CType(cmbKlient.SelectedItem, clsKlient).Kraj & vbNewLine & "Telefon: " & CType(cmbKlient.SelectedItem, clsKlient).Telefon & vbNewLine & "Email: " & CType(cmbKlient.SelectedItem, clsKlient).Email

            PobierzAdresyWysylki(CType(cmbKlient.SelectedItem, clsKlient).Id)
            If cmbAdresWysylki.Items.Count > 0 Then
                cmbAdresWysylki.SelectedIndex = 0
            Else
                MessageBox.Show("Podaj wszystkie dane klienta.", "WIREMET")
                cmdKlient.PerformClick()
            End If
        End If

    End Sub

    Private Sub txtNumerZamowieniaKlienta_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNumerZamowieniaKlienta.TextChanged
        mvarChanged = True
        mvarChangedInfZlecenia = True
    End Sub

    Private Sub dtpDataZlozenia_TextChanged(sender As Object, e As System.EventArgs) Handles dtpDataZlozenia.TextChanged
        mvarChanged = True
        mvarChangedInfZlecenia = True
    End Sub

    Private Sub dtpDataRealizacji_TextChanged(sender As Object, e As System.EventArgs) Handles dtpDataRealizacji.TextChanged
        mvarChanged = True
        mvarChangedInfZlecenia = True
    End Sub

    Private Sub cmbSposobZmowienia_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbSposobZmowienia.SelectedIndexChanged
        mvarChanged = True
    End Sub

    Private Sub txtUwagiZlecenia_TextChanged(sender As Object, e As EventArgs) Handles txtUwagiZlecenia.TextChanged
        mvarChanged = True
        mvarChangedInfZlecenia = True
    End Sub

    Private Sub cmbStatusZlecenia_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbStatusZlecenia.SelectedIndexChanged
        mvarChanged = True
    End Sub

    Private Sub cmbAdresWysylki_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbAdresWysylki.SelectedIndexChanged
        mvarChanged = True
    End Sub

    Private Sub cmbPakowanie_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbPakowanie.TextChanged

        If cmbPakowanie.SelectedIndex > -1 Then
            txtCenaPakowania.Text = FormatowanieLiczby(CType(cmbPakowanie.SelectedItem, clsPakowanie).Cena)
        Else
            txtCenaPakowania.Text = CStr(0)
        End If

    End Sub

#End Region

#Region "KeyPress"

    Private Sub cmbMaterial_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmbMaterial.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            chkPowierzony.Focus()
        End If
    End Sub

    Private Sub chkPowierzony_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles chkPowierzony.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWymiar.Focus()
        End If
    End Sub

    Private Sub txtWymiar_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtWymiar.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtIlosc.Focus()
        End If
    End Sub

    Private Sub txtIlosc_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtIlosc.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbJednostka.Focus()
        End If
    End Sub

    Private Sub cmbJednostka_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmbJednostka.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbMagazyn.Focus()
        End If
    End Sub

    Private Sub cmbMagazyn_KeyPress(sender As Object, e As KeyPressEventArgs) Handles cmbMagazyn.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtTolDolna.Focus()
        End If
    End Sub

    Private Sub txtTolDolna_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTolDolna.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtTolGorna.Focus()
        End If
    End Sub

    Private Sub txtTolGorna_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTolGorna.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWytrzymaloscMin.Focus()
        End If
    End Sub

    Private Sub txtWytrzymaloscMin_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtWytrzymaloscMin.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWytrzymaloscMax.Focus()
        End If
    End Sub

    Private Sub txtWytrzymaloscMax_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtWytrzymaloscMax.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWydluzenie.Focus()
        End If
    End Sub

    Private Sub txtWydluzenie_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtWydluzenie.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            chkSwiadectwo.Focus()
        End If
    End Sub

    Private Sub chkSwiadectwo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles chkSwiadectwo.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbPakowanie.Focus()
        End If
    End Sub

    Private Sub cmbPakowanie_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmbPakowanie.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            chkOpakowanieDoZaplaty.Focus()
        End If
    End Sub

    Private Sub chkOpakowanieDoZaplaty_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles chkOpakowanieDoZaplaty.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtCena.Focus()
        End If
    End Sub

    Private Sub txtCena_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCena.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbWaluta.Focus()
        End If
    End Sub

    Private Sub cmbWaluta_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmbWaluta.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtUwagi.Focus()
        End If
    End Sub

    Private Sub txtUwagi_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtUwagi.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmdDodajPozycjeZlecenia.Focus()
        End If
    End Sub

    Private Sub cmdDodajPozycjeZlecenia_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmdDodajPozycjeZlecenia.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmdZmien.Focus()
        End If
    End Sub

    Private Sub cmdZmien_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmdZmien.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbMaterial.Focus()
        End If
    End Sub

#End Region

    Private Sub frmZlecenia_Load(sender As Object, e As EventArgs) Handles Me.Load
        If dgvInformacje.Rows.Count > 0 Then
            dgvInformacje.ClearSelection()
        End If
    End Sub

    Private Sub frmZlecenia_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

        If Not mvarWyznTylkoDoOdczytu And Not mvarWyznNoweZlecenie Then
            mvarBlokowanie.Unlock()
        End If
        mvarDbHolder.Close()

    End Sub

    Private Sub frmZlecenia_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

        If mvarChanged Then
            Select Case MsgBox("Czy zapisać zlecenie do bazy?", MsgBoxStyle.YesNo, "WIREMET")
                Case MsgBoxResult.No
                Case MsgBoxResult.Yes
                    Zapisz()
                    If mvarCancel = True Then
                        e.Cancel = True
                    End If
            End Select
        End If

    End Sub


    Private Sub cmdTracing_Click(sender As Object, e As EventArgs) Handles cmdTracing.Click

        If Not mvarChanged And mvarZlecenie.ID > -1 Then
            Select Case MsgBox("Czy przesłać zlecenie do produkcji?", MsgBoxStyle.YesNo, "WIREMET")
                Case MsgBoxResult.No
                Case MsgBoxResult.Yes
                    PrzesylanieDanych()
            End Select
        Else
            If mvarZlecenie.ID > -1 Then
                MessageBox.Show("Wprowadzono zmiany.", "WIREMET")
            Else
                MessageBox.Show("Nie zapisano zlecenia do bazy.", "WIREMET")
            End If
            cmdZapisz.Focus()
        End If

    End Sub

    Private Sub Wait(ByVal ParamCol As Object)
        Dim lvarWait As New frmWait(CType(ParamCol(0), String))
        lvarWait.ShowDialog()
    End Sub

    Private Sub PrzesylanieDanych()

        Dim lvarWynik As String
        Dim lvarParamCol(1) As Object
        lvarParamCol(0) = "Kopiowanie danych ..."
        Me.Cursor = Cursors.WaitCursor
        mvarWaitThread = New Thread(AddressOf Wait)
        mvarWaitThread.Start(lvarParamCol)

        lvarWynik = clsInhZlecenie.Produkcja(mvarDbHolder, mvarZlecenie.ID)
        If lvarWynik = mvarZlecenie.Numer Then
            grbTracing.Visible = True
            cmdTracing.Enabled = False
            grbStatus.Visible = True

            mvarZlecenie.Tracking = 1
            mvarZlecenie.SatusID = 2
            If dgvInformacje.Rows.Count > 0 Then
                dgvInformacje.Rows.Clear()
            End If
            mvarZlecenie.Save(mvarDbHolder)
            mvarTrZlecenie = New clsInhTrZlecenie(clsInhTrZlecenie.PobierzIdZleceniaTr(mvarDbHolder, mvarZlecenie.ID), mvarDbHolder, True)

            UzupelnienieDanych(CBool(mvarWyznKopiowania))
            mvarChanged = False
        End If

        Me.Cursor = Cursors.Default
        If mvarWaitThread.IsAlive Then
            mvarWaitThread.Sleep(1000)
            mvarWaitThread.Abort()
        End If
        MessageBox.Show("Zlecenie zostało przesłane.", "WIREMET")

    End Sub


    Private Sub ZapiszTracking()

        Dim lvarTabela As New DataTable



        mvarDbHolder.BeginTrans()

        'ZMIANA W TABELI OEM.ZLECENIE
        With mvarZlecenie
            .KlientID = CType(cmbKlient.SelectedItem, clsKlient).Id
            .PracownikID = mvarUzytkownik.Id
            .SposobZamowieniaId = CType(cmbSposobZmowienia.SelectedItem, clsSposobZamowienia).Id
            .DataUtworzenia = dtpData_Utworzenia.Value
            .DataZamowienia = dtpDataZlozenia.Value
            .Termin = dtpDataRealizacji.Value
            .SatusID = CType(cmbStatusZlecenia.SelectedItem, clsStatus).Id
            .Uwagi = txtUwagiZlecenia.Text
            .AdresWysylkiId = CType(cmbAdresWysylki.SelectedItem, clsAdresWysylki).Id
            .NumerZamowieniaKlienta = txtNumerZamowieniaKlienta.Text
            If mvarZlecenie.ID = -1 Then
                .StatusWysylkiID = 1
            End If
            .PozycjeZlecenia.Clear()
            For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
                .PozycjeZlecenia.Add(CType(lvarRow.Tag, clsInhPozycjaZlecenia))
            Next
            .Save(mvarDbHolder)
        End With

        'ZMIANA W TABELACH TRACKING.POZYCJE_ZLECENIA
        For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
            If CBool(lvarRow.Cells("colInfZmiana").Value) = True Then
                For Each lvarTrPozycja As clsInhTrPozycjaZlecenia In mvarTrZlecenie.PozycjeZlecenia
                    If lvarTrPozycja.OemId = CType(lvarRow.Tag, clsInhPozycjaZlecenia).Id Then
                        With lvarTrPozycja
                            .PowierzonyMaterial = CType(lvarRow.Tag, clsPozycjeZlecenia).PowierzonyMaterial
                            .GatunekId = CType(lvarRow.Tag, clsPozycjeZlecenia).GatunekId
                            .Wymiar = CType(lvarRow.Tag, clsPozycjeZlecenia).Wymiar
                            .TolDolna = CType(lvarRow.Tag, clsPozycjeZlecenia).TolDolna
                            .TolGorna = CType(lvarRow.Tag, clsPozycjeZlecenia).TolGorna
                            .WytrzymaloscMin = CType(lvarRow.Tag, clsPozycjeZlecenia).WytrzymaloscMin
                            .WytrzymaloscMax = CType(lvarRow.Tag, clsPozycjeZlecenia).WytrzymaloscMax
                            .Wydluzenie = CType(lvarRow.Tag, clsPozycjeZlecenia).Wydluzenie
                            .Ilosc = CType(lvarRow.Tag, clsPozycjeZlecenia).Ilosc
                            .JednostkaMiaryId = CType(lvarRow.Tag, clsPozycjeZlecenia).JednostkaMiaryId
                            .Swiadectwo = CType(lvarRow.Tag, clsPozycjeZlecenia).Swiadectwo
                            .Uwagi = CType(lvarRow.Tag, clsPozycjeZlecenia).Uwagi
                            .PakowaniaId = CType(lvarRow.Tag, clsPozycjeZlecenia).PakowaniaId
                            .MagazynId = CType(lvarRow.Tag, clsPozycjeZlecenia).MagazynId
                            .DataZmiany = Now.ToShortDateString()
                            '.SchematyProdukcji.Clear()
                            'For Each lvar As clsInhSchematProdukcji In lvarRow.Tag(0)
                            '    .SchematyProdukcji.Add(lvar)
                            'Next
                            'If cmdUsun.Text = "ANULUJ" Then
                            '    .StatusId = 7
                            'End If
                            If Not mvarChangedInfZlecenia Then
                                .Save(mvarDbHolder)
                            End If
                        End With
                    End If
                Next
            End If
        Next
        'ZMIANA W TABELI TRACKING.ZLECENIE
        If mvarChangedInfZlecenia Then
            With mvarTrZlecenie
                .KlientID = CType(cmbKlient.SelectedItem, clsKlient).Id
                .DataZamowienia = dtpDataZlozenia.Value
                .Termin = dtpDataRealizacji.Value
                .Uwagi = txtUwagiZlecenia.Text
                .DataZmiany = Now.ToShortDateString()
                .Save(mvarDbHolder)
            End With
        End If
        mvarDbHolder.CommitTrans()
        WyczyscInformacjePodstawowe()
        WyczyscPozycje()
        dgvInformacje.Rows.Clear()
        mvarZlecenie = New clsInhZlecenie(mvarZlecenie.ID, mvarDbHolder)
        mvarWyznKopiowania = CInt(False)
        UzupelnienieDanych(CBool(mvarWyznKopiowania))
        mvarChanged = False
        MessageBox.Show("Zapisano do bazy.", "WIREMET")
        mvarCancel = False

    End Sub

    Private Sub ZmienStatusTrackingu()

        mvarDbHolder.BeginTrans()
        'ZMIANA W TABELACH TRACKING.POZYCJE_ZLECENIA

        For Each lvarTrPozycja As clsInhTrPozycjaZlecenia In mvarTrZlecenie.PozycjeZlecenia
            If lvarTrPozycja.OemId = CType(dgvInformacje.SelectedRows(0).Tag, clsInhPozycjaZlecenia).Id Then
                With lvarTrPozycja
                    .StatusId = 7
                    If Not mvarChangedInfZlecenia Then
                        .DataZmiany = Now.ToShortDateString()  '"'" & Now.ToString() & "'"
                        .Save(mvarDbHolder)
                    End If
                End With
            End If
        Next


        mvarDbHolder.CommitTrans()
        mvarChanged = False
        MessageBox.Show("Zapisano do bazy.", "WIREMET")
        mvarCancel = False

    End Sub

End Class